package com.example.design.leetcode.StackAndQueue;

//剑指 Offer 06. 从尾到头打印链表

//输入一个链表的头节点，从尾到头反过来返回每个节点的值（用数组返回）。
//
//    示例 1：
//    输入：head = [1,3,2]
//    输出：[2,3,1]
//
//    限制：
//    0 <= 链表长度 <= 10000

// 标签： 栈

import java.util.Arrays;
import java.util.Stack;

public class Practice18 {
    public static int[] reversePrint(ListNode head) {
        Stack<ListNode> stask = new Stack();

        while(head != null) {
            stask.add(head);
            head = head.next;
        }

        int size = stask.size();

        int[] res = new int[size];
        for (int i = 0; i < size; i++) {
            res[i] = stask.pop().val;
        }

        return res;
    }

    public static void main(String[] args) {
        ListNode head = new ListNode(1);
        ListNode head2 = new ListNode(3);
        ListNode head3 = new ListNode(2);
        head.next = head2;
        head2.next = head3;

        int[] ints = reversePrint(head);

        System.out.println(Arrays.toString(ints));
    }

}
